package com.yidu.ladder.system.service;

import java.util.List;
import java.util.Map;

import com.yidu.ladder.base.domain.Role;
import com.yidu.ladder.base.domain.RoleVo;
import com.yidu.ladder.system.domain.Resource;
import com.yidu.ladder.system.domain.UserVo;



/**
 * 权限业务逻辑层
 * @author ld
 *
 */
public interface PowerService {
	
	/**
	 * 查询用户拥有角色
	 * @param userId
	 * @return
	 */
	public abstract List<String> queryUserHasRoleId(String userId);
	
	
	/**
	 * 查询角色拥有资源
	 * @param roleId
	 * @return
	 */
	public abstract List<String> queryRoleHasResourceId(String roleId);
	
	/**
	 * 查询用户带条件
	 * @param userVo
	 * @return
	 */
	public abstract Map<String, Object> queryUser(UserVo userVo);
	
	/**
	 * 查询角色带条件
	 * @param roelVo
	 * @return
	 */
	public abstract Map<String, Object> queryRole(RoleVo roelVo);
	
	/**
	 * 修改用户拥有角色
	 * @param userId
	 * @param roleIds
	 * @param flag
	 * @return
	 */
	public abstract boolean updateUserRole(String userId, String[] roleIds, String flag);
	
	/**
	 * 修改角色拥有资源
	 * @param roleId
	 * @param resourceIds
	 * @return
	 */
	public abstract boolean updateRoleResource(String roleId, String[] resourceIds);
	
	/**
	 * 查询所有角色
	 * @return
	 */
	public abstract List<Role> queryAllRole();
	
	/**
	 * 查询所有资源
	 * @return
	 */
	public abstract List<Resource> queryAllResource();
	
	/**
	 * 查询用户拥有的资源
	 * @param userId
	 * @return
	 */
	public abstract List<Resource> queryUserHasResource(String userId);
	
	/**
	 * 查询指定资源页面用户拥有的资源按钮
	 * @param userId
	 * @param resourceName
	 * @return
	 */
	public abstract List<String> queryUserHasResourceBtn(String userId, String resourceName);
}
